<!DOCTYPE html>
<!--
Copyright 2019 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->

<link rel="import" href="/tracing/value/histogram.html">

<script>
'use strict';

tr.exportTo('tr.v', function() {
  class HistogramDeserializer {
    static deserialize(data) {
      const deserializer = new HistogramDeserializer(data[0], data[1]);
      return data.slice(2).map(datum =>
        tr.v.Histogram.deserialize(datum, deserializer));
    }

    constructor(objects, diagnostics) {
      this.objects_ = objects;
      this.diagnostics_ = [];
      for (const [type, diagnosticsByName] of Object.entries(
          diagnostics || {})) {
        for (const [name, diagnosticsById] of Object.entries(
            diagnosticsByName)) {
          for (const [id, data] of Object.entries(diagnosticsById)) {
            const diagnostic = tr.v.d.Diagnostic.deserialize(
                type, data, this);
            this.diagnostics_[parseInt(id)] = {name, diagnostic};
          }
        }
      }
    }

    getObject(id) {
      return this.objects_[id];
    }

    getDiagnostic(id) {
      return this.diagnostics_[parseInt(id)];
    }
  }

  return {HistogramDeserializer};
});
</script>
